package com.example.test.bean;


import com.example.test.valid.AreaValid;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BasicArea implements TreeNode<BasicArea>, Serializable {

    @NotBlank(groups={AreaValid.update.class})
    private String id;

    /**
    * 区域名称
    */
    private String name;

    /**
    * 区域码
    */
    private String code;

    /**
    * 区域备注
    */
    private String remark;

    /**
    * 父级区域id
    */

    @NotNull(message = "不能为null")
    private String parentId;

    /**
    * 所有父级区域id
    */
    @Min(value=3,message = "长度最小值为3")
    @Max(value=30,message = "长度最大值为30")
    private String path;

    /**
    * 区域层级
    */
    private Integer depth;

    /**
    * 扩展属性
    */
    private String extend;

    /**
    * 排序号
    */
    private Integer sort;

    /**
    * 删除标识【0未删除 1删除】
    */
    private Boolean deleteStatus;

    /**
    * 创建人
    */
    private String createUser;

    /**
    * 创建时间
    */
    private Date createTime;

    /**
    * 修改人
    */
    private String updateUser;

    /**
    * 修改时间
    */
    private Date updateTime;

    /**
    * 预留属性1
    */
    private String column1;

    /**
    * 预留属性2
    */
    private String column2;

    /**
    * 预留属性3
    */
    private String column3;

    /**
    * 预留属性4
    */
    private String column4;

    /**
    * 预留属性5
    */
    private String column5;

    List<BasicArea> children;

    public BasicArea(String id, String parentId, int depth) {
        this.id = id;
        this.parentId = parentId;
        this.depth = depth;

    }
}